深入理解 Java 中的转义符: \u000a\u0022 您所在的位置:网站首页 unicode 特殊字符 深入理解 Java 中的转义符: \u000a\u0022

深入理解 Java 中的转义符: \u000a\u0022

2023-10-17 05:36| 来源: 网络整理| 查看: 265

Java 对 Unicode 转义字符不会进行任何特殊的处理,只是简单的将其替换称相应的字符!

因此,在编写代码时,任何出现 Unicde 字符串的地方,都要额外注意,倍加小心,要知道 Java 词法是如何解析的?转移后的代码是否合法?逻辑上是否正确?

Unicode 特殊字符含义\u000a换行符 \n\u007d{\u007b}\u0022"\u002b+

示例一 :

public void test(){ // 这是注释\u000a System.out.println("被注释的代码,不应该打印"); }

执行上面的函数,会发现,被注释掉的代码竟然被执行了,因为 \u000a 出现在代码中,在词法解析时,此处发生了换行,而解析后得到的代码如下:

public void test(){ // 这是注释 System.out.println("被注释的代码,不应该打印"); }

因此,后面的代码会被执行。

示例二:

public void test2(){ System.out.println("5 + 10 = \u0022+ (5+10) + \u0022"); }

打印的信息为 5 + 10 = 15,因为字符串中添加了 unicode 字符,被解析后得到的真实函数如下:

public void test2(){ System.out.println("5 + 10 = " + (5+10) + ""); }

因此代码执行的结果会有所不同。

也正是因为如此,当字符串中出现 \u000a 时,会出现编译错误,报错的内容为: java: 未结束的字符串文字 或 illegal escape character in string literal

例如:

public void test2(){ System.out.println("\u000a"); // 编译错误 }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有